<?php
class Entidade extends DB{
    //
    private $entidade;
    private $pk = array();
    private $campos = array();
    private $camposInserir = array();
    private $nrRegistro ;
    private $pkValor  = array();
    
    
    private $valores = array();
    
    
    public function __construct() {
        
        
    }
    public function __set($atributo, $valor){
          $this->$atributo = $valor;
    }
 
    public function __get($atributo){
          return $this->$atributo;
    }
    
    
    public function inserir($dados) {
        // montagem dos campos
        $this->valores=$dados;
        $sqlCampos='';
        $sqlValores='';
        foreach ($this->camposInserir as $campo){
            $sqlCampos.=" $campo,";
            $sqlValores.='?,';
            }
            
        $sqlCampos=substr($sqlCampos,0,-1); 
        $sqlValores=substr($sqlValores,0,-1); 
        
        $queryCad = "INSERT INTO ".$this->entidade." ($sqlCampos) VALUES ($sqlValores)";
        
        
        $cadastrar = self::conn()->prepare($queryCad);
        if($cadastrar->execute($this->valores)){
            return true;
            }
        else{
            return false;
            }    
        
    }

    public function editar($dados) {
        // montagem dos campos
        $this->valores=$dados;
        $sqlCampos='';
        foreach ($this->campos as $campo){
            $sqlCampos.=" $campo=?,";
            }
        
        $sqlPK='';
        $indice=0;
        foreach ($this->pk as $campo){
            $sqlPK.=" $campo='".$this->pkValor[$indice]."' AND";
            $indice++;
            }     
            
        $sqlCampos=substr($sqlCampos,0,-1); 
        $sqlPK=substr($sqlPK,0,-3); 
        $queryEdit='UPDATE '.$this->entidade.' SET '.$sqlCampos.'  WHERE '.$sqlPK.'';
        
        $editar = self::conn()->prepare($queryEdit);
        if($editar->execute($this->valores)){
            return true;
            }
        else{
            return false;
            }    
        
         }
    
    public function excluir() {
        $sqlPK='';
        $indice=0;
        foreach ($this->pk as $campo){
            $this->pkValor[$indice]=  str_replace("'", '', $this->pkValor[$indice]);
            $sqlPK.=" $campo='".$this->pkValor[$indice]."' AND";
            $indice++;
            }     
            
        
        $sqlPK=substr($sqlPK,0,-3); 
        
        $queryDelete = "DELETE FROM ".$this->entidade.' WHERE '.$sqlPK.'';
        $deletar = self::conn()->prepare($queryDelete);
       
        if($deletar->execute()){
            return true;
            }
        else{
            return false;
            }    
    }   
    
    public function selecionar() {
        $sqlPK='';
        if(count($this->pkValor)>0)
        {
            $indice=0;
            foreach ($this->pk as $campo){
            $sqlPK.=" $campo='".$this->pkValor[$indice]."' AND";
            $indice++;
            }     
     
        $sqlPK=substr($sqlPK,0,-3);
        }
         
        
        $querySelect = 'SELECT * FROM '.$this->entidade;
        if ($sqlPK<>''){
            $querySelect.='  WHERE '.$sqlPK.'';   
            }
        $selecao = self::conn()->prepare($querySelect);
        $selecao->execute();
        $this->nrRegistro=$selecao->rowCount();
        if ($sqlPK<>''){
            return $selecao->fetchObject();   
            }
         else
             {
             return  $selecao;    
             }
              
    }        
}
?>
